/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mutual.entidades;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author yue
 */
@Entity
@Table(name = "Socios")
@NamedQueries({
    @NamedQuery(name = "Socios.findAll", query = "SELECT s FROM Socios s"),
    @NamedQuery(name = "Socios.findByTipoDocumento", query = "SELECT s FROM Socios s WHERE s.sociosPK.tipoDocumento = :tipoDocumento"),
    @NamedQuery(name = "Socios.findByNumeroDocumento", query = "SELECT s FROM Socios s WHERE s.sociosPK.numeroDocumento = :numeroDocumento"),
    @NamedQuery(name = "Socios.findByApellido", query = "SELECT s FROM Socios s WHERE s.apellido = :apellido"),
    @NamedQuery(name = "Socios.findByNombre", query = "SELECT s FROM Socios s WHERE s.nombre = :nombre"),
    @NamedQuery(name = "Socios.findByFechaNacimiento", query = "SELECT s FROM Socios s WHERE s.fechaNacimiento = :fechaNacimiento"),
    @NamedQuery(name = "Socios.findByCalleDomicilio", query = "SELECT s FROM Socios s WHERE s.calleDomicilio = :calleDomicilio"),
    @NamedQuery(name = "Socios.findByNumeroDomicilio", query = "SELECT s FROM Socios s WHERE s.numeroDomicilio = :numeroDomicilio"),
    @NamedQuery(name = "Socios.findByDepartamento", query = "SELECT s FROM Socios s WHERE s.departamento = :departamento"),
    @NamedQuery(name = "Socios.findByPiso", query = "SELECT s FROM Socios s WHERE s.piso = :piso"),
    @NamedQuery(name = "Socios.findByLegajo", query = "SELECT s FROM Socios s WHERE s.legajo = :legajo"),
    @NamedQuery(name = "Socios.findByTelefonoParticular", query = "SELECT s FROM Socios s WHERE s.telefonoParticular = :telefonoParticular"),
    @NamedQuery(name = "Socios.findByEmail", query = "SELECT s FROM Socios s WHERE s.email = :email"),
    @NamedQuery(name = "Socios.findByBloqueado", query = "SELECT s FROM Socios s WHERE s.bloqueado = :bloqueado"),
    @NamedQuery(name = "Socios.findByTelefonoCelular", query = "SELECT s FROM Socios s WHERE s.telefonoCelular = :telefonoCelular"),
    @NamedQuery(name = "Socios.findByTelefonoLaboral", query = "SELECT s FROM Socios s WHERE s.telefonoLaboral = :telefonoLaboral")})
public class Socios implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected SociosPK sociosPK;
    @Basic(optional = false)
    @Column(name = "apellido")
    private String apellido;
    @Basic(optional = false)
    @Column(name = "nombre")
    private String nombre;
    @Column(name = "fechaNacimiento")
    @Temporal(TemporalType.DATE)
    private Date fechaNacimiento;
    @Basic(optional = false)
    @Column(name = "calleDomicilio")
    private String calleDomicilio;
    @Basic(optional = false)
    @Column(name = "numeroDomicilio")
    private int numeroDomicilio;
    @Column(name = "departamento")
    private String departamento;
    @Column(name = "piso")
    private String piso;
    @Basic(optional = false)
    @Column(name = "legajo")
    private int legajo;
    @Column(name = "telefonoParticular")
    private String telefonoParticular;
    @Column(name = "email")
    private String email;
    @Column(name = "bloqueado")
    private Boolean bloqueado;
    @Column(name = "telefonoCelular")
    private String telefonoCelular;
    @Column(name = "telefonoLaboral")
    private String telefonoLaboral;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "socios")
    private Collection<Familiares> familiaresCollection;
    @JoinColumn(name = "tipoDocumento", referencedColumnName = "id", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private TipoDocumento tipoDocumento1;
    @JoinColumn(name = "nacionalidad", referencedColumnName = "id")
    @ManyToOne
    private Nacionalidades nacionalidades;
    @JoinColumn(name = "estadoCivil", referencedColumnName = "id")
    @ManyToOne
    private EstadoCivil estadoCivil;
    @JoinColumn(name = "dependenciaUniversitaria", referencedColumnName = "id")
    @ManyToOne
    private DependenciaUniversitaria dependenciaUniversitaria;
    @JoinColumn(name = "ciudad", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private Ciudades ciudades;
    @JoinColumn(name = "categoria", referencedColumnName = "id")
    @ManyToOne(optional = false)
    private CategoriasSocio categoriasSocio;
    @JoinColumn(name = "actividad", referencedColumnName = "id")
    @ManyToOne
    private Actividades actividades;

    public Socios() {
    }

    public Socios(SociosPK sociosPK) {
        this.sociosPK = sociosPK;
    }

    public Socios(SociosPK sociosPK, String apellido, String nombre, String calleDomicilio, int numeroDomicilio, int legajo) {
        this.sociosPK = sociosPK;
        this.apellido = apellido;
        this.nombre = nombre;
        this.calleDomicilio = calleDomicilio;
        this.numeroDomicilio = numeroDomicilio;
        this.legajo = legajo;
    }

    public Socios(int tipoDocumento, int numeroDocumento) {
        this.sociosPK = new SociosPK(tipoDocumento, numeroDocumento);
    }

    public SociosPK getSociosPK() {
        return sociosPK;
    }

    public void setSociosPK(SociosPK sociosPK) {
        this.sociosPK = sociosPK;
    }

    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public String getCalleDomicilio() {
        return calleDomicilio;
    }

    public void setCalleDomicilio(String calleDomicilio) {
        this.calleDomicilio = calleDomicilio;
    }

    public int getNumeroDomicilio() {
        return numeroDomicilio;
    }

    public void setNumeroDomicilio(int numeroDomicilio) {
        this.numeroDomicilio = numeroDomicilio;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public String getPiso() {
        return piso;
    }

    public void setPiso(String piso) {
        this.piso = piso;
    }

    public int getLegajo() {
        return legajo;
    }

    public void setLegajo(int legajo) {
        this.legajo = legajo;
    }

    public String getTelefonoParticular() {
        return telefonoParticular;
    }

    public void setTelefonoParticular(String telefonoParticular) {
        this.telefonoParticular = telefonoParticular;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Boolean getBloqueado() {
        return bloqueado;
    }

    public void setBloqueado(Boolean bloqueado) {
        this.bloqueado = bloqueado;
    }

    public String getTelefonoCelular() {
        return telefonoCelular;
    }

    public void setTelefonoCelular(String telefonoCelular) {
        this.telefonoCelular = telefonoCelular;
    }

    public String getTelefonoLaboral() {
        return telefonoLaboral;
    }

    public void setTelefonoLaboral(String telefonoLaboral) {
        this.telefonoLaboral = telefonoLaboral;
    }

    public Collection<Familiares> getFamiliaresList() {
        return familiaresCollection;
    }

    public void setFamiliaresList(Collection<Familiares> familiaresCollection) {
        this.familiaresCollection = familiaresCollection;
    }

    public TipoDocumento getTipoDocumento1() {
        return tipoDocumento1;
    }

    public void setTipoDocumento1(TipoDocumento tipoDocumento1) {
        this.tipoDocumento1 = tipoDocumento1;
    }

    public Nacionalidades getNacionalidades() {
        return nacionalidades;
    }

    public void setNacionalidades(Nacionalidades nacionalidades) {
        this.nacionalidades = nacionalidades;
    }

    public EstadoCivil getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(EstadoCivil estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public DependenciaUniversitaria getDependenciaUniversitaria() {
        return dependenciaUniversitaria;
    }

    public void setDependenciaUniversitaria(DependenciaUniversitaria dependenciaUniversitaria) {
        this.dependenciaUniversitaria = dependenciaUniversitaria;
    }

    public Ciudades getCiudades() {
        return ciudades;
    }

    public void setCiudades(Ciudades ciudades) {
        this.ciudades = ciudades;
    }

    public CategoriasSocio getCategoriasSocio() {
        return categoriasSocio;
    }

    public void setCategoriasSocio(CategoriasSocio categoriasSocio) {
        this.categoriasSocio = categoriasSocio;
    }

    public Actividades getActividades() {
        return actividades;
    }

    public void setActividades(Actividades actividades) {
        this.actividades = actividades;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (sociosPK != null ? sociosPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Socios)) {
            return false;
        }
        Socios other = (Socios) object;
        if ((this.sociosPK == null && other.sociosPK != null) || (this.sociosPK != null && !this.sociosPK.equals(other.sociosPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "mutual.entidades.Socios[sociosPK=" + sociosPK + "]";
    }
}
